www.gusucode.com > VC++ 通达信系统设置V3.0-源码程序 > VC++ 通达信系统设置V3.0-源码程序/code/XXMPage.cpp

    //Download by http://www.NewXing.com
// XXMPage.cpp : implementation file
//

#include "stdafx.h"
#include "tdxwcfg.h"
#include "XXMPage.h"
#include "EditXXMDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CXXMPage property page

IMPLEMENT_DYNCREATE(CXXMPage, CPropertyPage)

CXXMPage::CXXMPage() : CPropertyPage(CXXMPage::IDD)
{
	//{{AFX_DATA_INIT(CXXMPage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

CXXMPage::~CXXMPage()
{
}

void CXXMPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CXXMPage)
	DDX_Control(pDX, IDC_XXM_LIST, m_XXMList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CXXMPage, CPropertyPage)
	//{{AFX_MSG_MAP(CXXMPage)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_BN_CLICKED(IDC_MODIFY_BUTTON, OnModifyButton)
	ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton)
	ON_NOTIFY(NM_DBLCLK, IDC_XXM_LIST, OnDblclkXxmList)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()



void CXXMPage::OnAddButton() 
{
	if(m_XXMNum >= 20)
	{
		MessageBox("消息面太多,不能再增加!","通达信",MB_OK|MB_ICONEXCLAMATION);
		return;
	}
	CEditXXMDlg dlg;
	dlg.m_bAdd = TRUE;
	if( dlg.DoModal() == IDOK )
	{
		XXMList[m_XXMNum].XXMTopic		= dlg.m_XXMTopic;
		XXMList[m_XXMNum].XXMType		= dlg.m_XXMType;
		XXMList[m_XXMNum].XXMPath		= dlg.m_XXMPath;
		XXMList[m_XXMNum].XXMTitleRow	= dlg.m_nTitleRow;
		m_XXMNum++;
		FillItem();
	}
}

void CXXMPage::OnModifyButton() 
{
	POSITION pos = m_XXMList.GetFirstSelectedItemPosition();
	if(pos != NULL)
	{
		CurrentXXM = m_XXMList.GetNextSelectedItem(pos);

		CEditXXMDlg dlg;
		dlg.m_bAdd = FALSE;
		dlg.m_XXMTopic = XXMList[CurrentXXM].XXMTopic;
		dlg.m_XXMType  = XXMList[CurrentXXM].XXMType;
		dlg.m_XXMPath  = XXMList[CurrentXXM].XXMPath;
		dlg.m_nTitleRow= XXMList[CurrentXXM].XXMTitleRow;
		if( dlg.DoModal() == IDOK )
		{
			XXMList[CurrentXXM].XXMTopic	= dlg.m_XXMTopic;
			XXMList[CurrentXXM].XXMType		= dlg.m_XXMType;
			XXMList[CurrentXXM].XXMPath		= dlg.m_XXMPath;
			XXMList[CurrentXXM].XXMTitleRow	= dlg.m_nTitleRow;
			FillItem();
		}
	}
}

void CXXMPage::OnDeleteButton() 
{
	POSITION pos = m_XXMList.GetFirstSelectedItemPosition();
	if(pos != NULL)
	{
		CurrentXXM = m_XXMList.GetNextSelectedItem(pos);
		if(MessageBox("你确定删除该消息面吗?","通达信",MB_OKCANCEL|MB_ICONEXCLAMATION) == IDOK)
		{
			for(int i = CurrentXXM;i < m_XXMNum-1;i++)
				XXMList[i] = XXMList[i+1];
			m_XXMNum--;
			FillItem();
		}
	}
}

BOOL CXXMPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	int i;

	m_ImageList.Create(16,16,ILC_COLOR4|ILC_MASK,1,1);

	HICON hIcon = ::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_NEWS));
	m_ImageList.Add(hIcon);
	m_XXMList.SetImageList(&m_ImageList,LVSIL_SMALL);

	m_XXMList.SetExtendedStyle (LVS_EX_FULLROWSELECT);

	char *ColStr[3] = {"消息面名","消息类型","存放位置"};
	int ColWidth[3] = {82,80,250};
	LV_COLUMN lvColumn;
	lvColumn.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_FMT|LVCF_SUBITEM;
	lvColumn.fmt = LVCFMT_LEFT;
	for(i = 0; i < 3;i++) 
	{
		lvColumn.pszText = ColStr[i];
		lvColumn.cx = ColWidth[i];
		lvColumn.iSubItem = i;
		m_XXMList.InsertColumn (i,&lvColumn);
	}
	
	for(i = 0;i < g_XXMNum;i++)
	{
		XXMList[i].XXMTopic		= g_XXMTopic[i];
		XXMList[i].XXMType		= g_XXMType[i];
		XXMList[i].XXMPath		= g_XXMPath[i];
		XXMList[i].XXMTitleRow	= g_XXMTitleRow[i];
	}
	m_XXMNum = g_XXMNum;

	FillItem();
	
	return TRUE;
}

extern int GetComboPos(int TypeInt);

void CXXMPage::FillItem()
{
	m_XXMList.DeleteAllItems();

	int tempInt;

	LV_ITEM lvItem;
	lvItem.mask = LVIF_TEXT|LVIF_IMAGE|LVIF_STATE;
	lvItem.state = 0;
	lvItem.stateMask = 0;
	lvItem.iSubItem = 0;
	lvItem.iImage = 0;
	for(int i = 0;i < m_XXMNum;i++)
	{
		lvItem.iItem = i;
		lvItem.pszText = XXMList[i].XXMTopic.GetBuffer(0);
		m_XXMList.InsertItem (&lvItem);
		tempInt = GetComboPos(XXMList[i].XXMType);
		if(tempInt != -1)
		m_XXMList.SetItemText(i,1,XXMTypeStr[tempInt]);
		m_XXMList.SetItemText(i,2,XXMList[i].XXMPath);
	}
}

void CXXMPage::OnDblclkXxmList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	OnModifyButton();	
	*pResult = 0;
}

void CXXMPage::OnOK() 
{
	g_XXMNum = m_XXMNum;
	for(int i = 0;i < g_XXMNum;i++)
	{
		g_XXMTopic[i]	= XXMList[i].XXMTopic;
		g_XXMType[i]	= XXMList[i].XXMType;
		g_XXMPath[i]	= XXMList[i].XXMPath;
		g_XXMTitleRow[i]= XXMList[i].XXMTitleRow;
	}
	
	CPropertyPage::OnOK();
}